package br.com.churrascariabrasadeouro.telas;

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;

import br.com.churrascariabrasadeouro.Principal;
import br.com.churrascariabrasadeouro.negocio.Comanda;
import br.com.churrascariabrasadeouro.negocio.Item;
import br.com.churrascariabrasadeouro.negocio.Produto;
import br.com.churrascariabrasadeouro.regras.*;
public class TelaCadastroProdutos extends JFrame{

private static final long serialVersionUID = 1L;
	
	/**
	 * 
	 */
	//Itens da tela de cadastro
	private JLabel codigoLabel = new JLabel("Código: "); 
	private JTextField codigo  = new JTextField(15);
	private JLabel valorLabel= new JLabel("Valor");
	private JTextField valor = new JTextField(15);
	
	private JButton salvar = new JButton("Salvar");
	private JLabel descricaoLabel = new JLabel("Descrição");
	private JTextField descricao = new JTextField(20);
	private JLabel espaco = new JLabel("");  
    
	private ProdutoModeloTabela modelo = new ProdutoModeloTabela(); 
	private JTable tabela = new JTable(modelo);
	
	//Botoes referentes a tabela
	private JButton excluir = new JButton("Excluir");
	private JButton novo = new JButton("Novo");
	private JButton alterar = new JButton("Alterar");
	

	//Objeto de Regras referentes ao produto
	private RegraProduto regra = new RegraProduto();
	
	public TelaCadastroProdutos() {
		this.setTitle("Tela Cadastro de Produtos");
		this.setSize(300, 300);
		
		JPanel painelNorte = new JPanel();
		JPanel painelSul = new JPanel();
		
		codigo.setEditable(false);
		
		//Criando o formulario do produto
		JPanel formulario = new JPanel();
		formulario.setLayout(new GridLayout(6,2));
		formulario.add(codigoLabel);
		formulario.add(codigo);	
		formulario.add(valorLabel);
		formulario.add(valor);
		formulario.add (descricaoLabel);
		formulario.add(descricao);
		formulario.add (espaco);
		formulario.add(salvar);
		
		//Criando a tabela de Produtos
		modelo.setDados(regra.listaProduto());
		JScrollPane scrollPane = new JScrollPane(tabela);
		tabela.setFillsViewportHeight(true);
		tabela.setDragEnabled(false);
		tabela.setShowGrid(true);
		tabela.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		tabela.setCellSelectionEnabled(false);
		tabela.setColumnSelectionAllowed(false);
		tabela.setRowSelectionAllowed(true);
		tabela.getTableHeader().setReorderingAllowed(false);
		
		
		//Botoes
		painelSul.add(novo);
		painelSul.add(alterar);
		painelSul.add(excluir);
		
		painelNorte.add(formulario);
		
		
		this.add(painelNorte,BorderLayout.NORTH);
		this.add(scrollPane,BorderLayout.CENTER);
		this.add(painelSul,BorderLayout.SOUTH);
		
		this.pack();
		
		// CRUD - Salvar, Excluir, Alterar, Novo
		salvar.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {
				Produto prod = new Produto();
				if(!codigo.getText().isEmpty()){
					prod.setId(Integer.parseInt(codigo.getText()));
				}
				prod.setDescricao(descricao.getText());
				prod.setValor(Double.parseDouble(valor.getText()));
				regra.cadastrarProduto(prod);
				modelo.setDados(regra.listaProduto());
				tabela.updateUI();
				JOptionPane.showMessageDialog(TelaCadastroProdutos.this, "Produto gravado com sucesso!");
				codigo.setText(null);
				descricao.setText(null);
				valor.setText(null);
			}
		});
		
		
		excluir.addActionListener(new ActionListener() {
			
			
			public void actionPerformed(ActionEvent arg0) {
				int linha = tabela.getSelectedRow();
				Produto prod = new Produto();
				prod.setId((Integer) tabela.getValueAt(linha, 0));
				regra.excluirProduto(prod);
				modelo.setDados(regra.listaProduto());
				tabela.updateUI();
				codigo.setText(null);
				descricao.setText(null);
				valor.setText(null);
			}
		});
		
		alterar.addActionListener(new ActionListener() {
		
			public void actionPerformed(ActionEvent arg0) {
				int linha = tabela.getSelectedRow();
				codigo.setText(tabela.getValueAt(linha, 0).toString());
				descricao.setText(tabela.getValueAt(linha, 1).toString());
				valor.setText(tabela.getValueAt(linha, 2).toString());
			}
		});
		
		novo.addActionListener(new ActionListener() {
			
			public void actionPerformed(ActionEvent arg0) {
				codigo.setText(null);
				descricao.setText(null);
				valor.setText(null);
			}
		});
		
		this.setVisible(true);
		this.pack();
	}


 
	  public static void main(String[] args) {
		new TelaCadastroProdutos().setVisible(true);
	}


}

